7 #ifndef __MSP430WARE_EUSCI_B_I2C_H__
8 #define __MSP430WARE_EUSCI_B_I2C_H__
12 #ifdef __MSP430_HAS_EUSCI_Bx__
32 typedef struct EUSCI_B_I2C_initMasterParam {
38 uint8_t selectClockSource;
48 uint8_t byteCounterThreshold;
54 uint8_t autoSTOPGeneration;
55 } EUSCI_B_I2C_initMasterParam;
62 typedef struct EUSCI_B_I2C_initSlaveParam {
71 uint8_t slaveAddressOffset;
76 uint32_t slaveOwnAddressEnable;
77 } EUSCI_B_I2C_initSlaveParam;
86 #define EUSCI_B_I2C_NO_AUTO_STOP UCASTP_0
87 #define EUSCI_B_I2C_SET_BYTECOUNT_THRESHOLD_FLAG UCASTP_1
88 #define EUSCI_B_I2C_SEND_STOP_AUTOMATICALLY_ON_BYTECOUNT_THRESHOLD UCASTP_2
96 #define EUSCI_B_I2C_SET_DATA_RATE_400KBPS 400000
97 #define EUSCI_B_I2C_SET_DATA_RATE_100KBPS 100000
105 #define EUSCI_B_I2C_CLOCKSOURCE_ACLK UCSSEL__ACLK
106 #define EUSCI_B_I2C_CLOCKSOURCE_SMCLK UCSSEL__SMCLK
114 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET0 0x00
115 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET1 0x02
116 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET2 0x04
117 #define EUSCI_B_I2C_OWN_ADDRESS_OFFSET3 0x06
125 #define EUSCI_B_I2C_OWN_ADDRESS_DISABLE 0x00
126 #define EUSCI_B_I2C_OWN_ADDRESS_ENABLE UCOAEN
135 #define EUSCI_B_I2C_TRANSMIT_MODE UCTR
136 #define EUSCI_B_I2C_RECEIVE_MODE 0x0000
146 #define EUSCI_B_I2C_NAK_INTERRUPT UCNACKIE
147 #define EUSCI_B_I2C_ARBITRATIONLOST_INTERRUPT UCALIE
148 #define EUSCI_B_I2C_STOP_INTERRUPT UCSTPIE
149 #define EUSCI_B_I2C_START_INTERRUPT UCSTTIE
150 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT0 UCTXIE0
151 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT1 UCTXIE1
152 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT2 UCTXIE2
153 #define EUSCI_B_I2C_TRANSMIT_INTERRUPT3 UCTXIE3
154 #define EUSCI_B_I2C_RECEIVE_INTERRUPT0 UCRXIE0
155 #define EUSCI_B_I2C_RECEIVE_INTERRUPT1 UCRXIE1
156 #define EUSCI_B_I2C_RECEIVE_INTERRUPT2 UCRXIE2
157 #define EUSCI_B_I2C_RECEIVE_INTERRUPT3 UCRXIE3
158 #define EUSCI_B_I2C_BIT9_POSITION_INTERRUPT UCBIT9IE
159 #define EUSCI_B_I2C_CLOCK_LOW_TIMEOUT_INTERRUPT UCCLTOIE
160 #define EUSCI_B_I2C_BYTE_COUNTER_INTERRUPT UCBCNTIE
168 #define EUSCI_B_I2C_BUS_BUSY UCBBUSY
169 #define EUSCI_B_I2C_BUS_NOT_BUSY 0x00
177 #define EUSCI_B_I2C_STOP_SEND_COMPLETE 0x00
178 #define EUSCI_B_I2C_SENDING_STOP UCTXSTP
186 #define EUSCI_B_I2C_START_SEND_COMPLETE 0x00
187 #define EUSCI_B_I2C_SENDING_START UCTXSTT
195 #define EUSCI_B_I2C_TIMEOUT_DISABLE UCCLTO_0
196 #define EUSCI_B_I2C_TIMEOUT_28_MS UCCLTO_1
197 #define EUSCI_B_I2C_TIMEOUT_31_MS UCCLTO_2
198 #define EUSCI_B_I2C_TIMEOUT_34_MS UCCLTO_3
221 extern void EUSCI_B_I2C_initMaster(uint16_t baseAddress,
222 EUSCI_B_I2C_initMasterParam *
param);
239 extern void EUSCI_B_I2C_initSlave(uint16_t baseAddress,
240 EUSCI_B_I2C_initSlaveParam *
param);
255 extern void EUSCI_B_I2C_enable(uint16_t baseAddress);
270 extern void EUSCI_B_I2C_disable(uint16_t baseAddress);
287 extern void EUSCI_B_I2C_setSlaveAddress(uint16_t baseAddress,
288 uint8_t slaveAddress);
309 extern void EUSCI_B_I2C_setMode(uint16_t baseAddress,
328 extern uint8_t EUSCI_B_I2C_getMode(uint16_t baseAddress);
345 extern void EUSCI_B_I2C_slavePutData(uint16_t baseAddress,
360 extern uint8_t EUSCI_B_I2C_slaveGetData(uint16_t baseAddress);
378 extern uint16_t EUSCI_B_I2C_isBusBusy(uint16_t baseAddress);
395 extern uint16_t EUSCI_B_I2C_masterIsStopSent(uint16_t baseAddress);
412 extern uint16_t EUSCI_B_I2C_masterIsStartSent(uint16_t baseAddress);
449 extern void EUSCI_B_I2C_enableInterrupt(uint16_t baseAddress,
487 extern void EUSCI_B_I2C_disableInterrupt(uint16_t baseAddress,
525 extern void EUSCI_B_I2C_clearInterrupt(uint16_t baseAddress,
579 extern uint16_t EUSCI_B_I2C_getInterruptStatus(uint16_t baseAddress,
599 extern void EUSCI_B_I2C_masterSendSingleByte(uint16_t baseAddress,
618 extern uint8_t EUSCI_B_I2C_masterReceiveSingleByte(uint16_t baseAddress);
638 extern bool EUSCI_B_I2C_masterSendSingleByteWithTimeout(uint16_t baseAddress,
658 extern void EUSCI_B_I2C_masterSendMultiByteStart(uint16_t baseAddress,
678 extern bool EUSCI_B_I2C_masterSendMultiByteStartWithTimeout(uint16_t baseAddress,
698 extern void EUSCI_B_I2C_masterSendMultiByteNext(uint16_t baseAddress,
718 extern bool EUSCI_B_I2C_masterSendMultiByteNextWithTimeout(uint16_t baseAddress,
739 extern void EUSCI_B_I2C_masterSendMultiByteFinish(uint16_t baseAddress,
760 extern bool EUSCI_B_I2C_masterSendMultiByteFinishWithTimeout(uint16_t baseAddress,
777 extern void EUSCI_B_I2C_masterSendStart(uint16_t baseAddress);
795 extern void EUSCI_B_I2C_masterSendMultiByteStop(uint16_t baseAddress);
814 extern bool EUSCI_B_I2C_masterSendMultiByteStopWithTimeout(uint16_t baseAddress,
831 extern void EUSCI_B_I2C_masterReceiveStart(uint16_t baseAddress);
845 extern uint8_t EUSCI_B_I2C_masterReceiveMultiByteNext(uint16_t baseAddress);
862 extern uint8_t EUSCI_B_I2C_masterReceiveMultiByteFinish(uint16_t baseAddress);
882 extern bool EUSCI_B_I2C_masterReceiveMultiByteFinishWithTimeout(uint16_t baseAddress,
900 extern void EUSCI_B_I2C_masterReceiveMultiByteStop(uint16_t baseAddress);
916 extern void EUSCI_B_I2C_enableMultiMasterMode(uint16_t baseAddress);
932 extern void EUSCI_B_I2C_disableMultiMasterMode(uint16_t baseAddress);
946 extern uint8_t EUSCI_B_I2C_masterReceiveSingle(uint16_t baseAddress);
960 extern uint32_t EUSCI_B_I2C_getReceiveBufferAddress(uint16_t baseAddress);
974 extern uint32_t EUSCI_B_I2C_getTransmitBufferAddress(uint16_t baseAddress);
1003 extern void EUSCI_B_I2C_setTimeout(uint16_t baseAddress,
MPU_initThreeSegmentsParam param